export var halyk;

(function (halyk) {
	var isTest = true;

	var testConfig = {
		pageUrL: "https://test-epay.homebank.kz/payform/",
		origin: "https://test-epay.homebank.kz",
		TokenAPIConfig: {
			url: "https://testoauth.homebank.kz/epay2/oauth2/token",
			clientId: "test",
		},
	};

	var prodConfig = {
		pageUrL: "https://epay.homebank.kz/payform/",
		origin: "https://epay.homebank.kz",
		TokenAPIConfig: {
			url: "https://epay-oauth.homebank.kz/oauth2/token",
			clientId: "uberflower",
		},
	};

	halyk.Config = function Config() {
		if (isTest) return testConfig;
		else return prodConfig;
	};

	var pageUrl = halyk.Config().pageUrL;

	var paymentPageOrigin = halyk.Config().origin;

	function pay(params) {
		location.href =
			pageUrl +
			"?params=" +
			LZString.compressToEncodedURIComponent(encodeParams(params));
	}
	var paymentWidgedCallBack = undefined;
	var widgetNode = undefined;
	var LZString = (function () {
		function o(o, r) {
			if (!t[o]) {
				t[o] = {};
				for (var n = 0; n < o.length; n++) {
					t[o][o.charAt(n)] = n;
				}
			}
			return t[o][r];
		}
		var r = String.fromCharCode,
			n = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
			e = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",
			t = {},
			i = {
				compressToBase64: function (o) {
					if (null == o) {
						return "";
					}
					var r = i._compress(o, 6, function (o) {
						return n.charAt(o);
					});
					switch (r.length % 4) {
						default:
						case 0:
							return r;
						case 1:
							return r + "===";
						case 2:
							return r + "==";
						case 3:
							return r + "=";
					}
				},
				decompressFromBase64: function (r) {
					return null == r
						? ""
						: "" == r
						? null
						: i._decompress(r.length, 32, function (e) {
								return o(n, r.charAt(e));
						  });
				},
				compressToUTF16: function (o) {
					return null == o
						? ""
						: i._compress(o, 15, function (o) {
								return r(o + 32);
						  }) + " ";
				},
				decompressFromUTF16: function (o) {
					return null == o
						? ""
						: "" == o
						? null
						: i._decompress(o.length, 16384, function (r) {
								return o.charCodeAt(r) - 32;
						  });
				},
				compressToUint8Array: function (o) {
					for (
						var r = i.compress(o),
							n = new Uint8Array(2 * r.length),
							e = 0,
							t = r.length;
						t > e;
						e++
					) {
						var s = r.charCodeAt(e);
						(n[2 * e] = s >>> 8), (n[2 * e + 1] = s % 256);
					}
					return n;
				},
				decompressFromUint8Array: function (o) {
					if (null === o || void 0 === o) {
						return i.decompress(o);
					}
					for (
						var n = new Array(o.length / 2), e = 0, t = n.length;
						t > e;
						e++
					) {
						n[e] = 256 * o[2 * e] + o[2 * e + 1];
					}
					var s = [];
					return (
						n.forEach(function (o) {
							s.push(r(o));
						}),
						i.decompress(s.join(""))
					);
				},
				compressToEncodedURIComponent: function (o) {
					return null == o
						? ""
						: i._compress(o, 6, function (o) {
								return e.charAt(o);
						  });
				},
				decompressFromEncodedURIComponent: function (r) {
					return null == r
						? ""
						: "" == r
						? null
						: ((r = r.replace(/ /g, "+")),
						  i._decompress(r.length, 32, function (n) {
								return o(e, r.charAt(n));
						  }));
				},
				compress: function (o) {
					return i._compress(o, 16, function (o) {
						return r(o);
					});
				},
				_compress: function (o, r, n) {
					if (null == o) {
						return "";
					}
					var e,
						t,
						i,
						s = {},
						p = {},
						u = "",
						c = "",
						a = "",
						l = 2,
						f = 3,
						h = 2,
						d = [],
						m = 0,
						v = 0;
					for (i = 0; i < o.length; i += 1) {
						if (
							((u = o.charAt(i)),
							Object.prototype.hasOwnProperty.call(s, u) ||
								((s[u] = f++), (p[u] = !0)),
							(c = a + u),
							Object.prototype.hasOwnProperty.call(s, c))
						) {
							a = c;
						} else {
							if (Object.prototype.hasOwnProperty.call(p, a)) {
								if (a.charCodeAt(0) < 256) {
									for (e = 0; h > e; e++) {
										(m <<= 1),
											v == r - 1 ? ((v = 0), d.push(n(m)), (m = 0)) : v++;
									}
									for (t = a.charCodeAt(0), e = 0; 8 > e; e++) {
										(m = (m << 1) | (1 & t)),
											v == r - 1 ? ((v = 0), d.push(n(m)), (m = 0)) : v++,
											(t >>= 1);
									}
								} else {
									for (t = 1, e = 0; h > e; e++) {
										(m = (m << 1) | t),
											v == r - 1 ? ((v = 0), d.push(n(m)), (m = 0)) : v++,
											(t = 0);
									}
									for (t = a.charCodeAt(0), e = 0; 16 > e; e++) {
										(m = (m << 1) | (1 & t)),
											v == r - 1 ? ((v = 0), d.push(n(m)), (m = 0)) : v++,
											(t >>= 1);
									}
								}
								l--, 0 == l && ((l = Math.pow(2, h)), h++), delete p[a];
							} else {
								for (t = s[a], e = 0; h > e; e++) {
									(m = (m << 1) | (1 & t)),
										v == r - 1 ? ((v = 0), d.push(n(m)), (m = 0)) : v++,
										(t >>= 1);
								}
							}
							l--,
								0 == l && ((l = Math.pow(2, h)), h++),
								(s[c] = f++),
								(a = String(u));
						}
					}
					if ("" !== a) {
						if (Object.prototype.hasOwnProperty.call(p, a)) {
							if (a.charCodeAt(0) < 256) {
								for (e = 0; h > e; e++) {
									(m <<= 1),
										v == r - 1 ? ((v = 0), d.push(n(m)), (m = 0)) : v++;
								}
								for (t = a.charCodeAt(0), e = 0; 8 > e; e++) {
									(m = (m << 1) | (1 & t)),
										v == r - 1 ? ((v = 0), d.push(n(m)), (m = 0)) : v++,
										(t >>= 1);
								}
							} else {
								for (t = 1, e = 0; h > e; e++) {
									(m = (m << 1) | t),
										v == r - 1 ? ((v = 0), d.push(n(m)), (m = 0)) : v++,
										(t = 0);
								}
								for (t = a.charCodeAt(0), e = 0; 16 > e; e++) {
									(m = (m << 1) | (1 & t)),
										v == r - 1 ? ((v = 0), d.push(n(m)), (m = 0)) : v++,
										(t >>= 1);
								}
							}
							l--, 0 == l && ((l = Math.pow(2, h)), h++), delete p[a];
						} else {
							for (t = s[a], e = 0; h > e; e++) {
								(m = (m << 1) | (1 & t)),
									v == r - 1 ? ((v = 0), d.push(n(m)), (m = 0)) : v++,
									(t >>= 1);
							}
						}
						l--, 0 == l && ((l = Math.pow(2, h)), h++);
					}
					for (t = 2, e = 0; h > e; e++) {
						(m = (m << 1) | (1 & t)),
							v == r - 1 ? ((v = 0), d.push(n(m)), (m = 0)) : v++,
							(t >>= 1);
					}
					for (;;) {
						if (((m <<= 1), v == r - 1)) {
							d.push(n(m));
							break;
						}
						v++;
					}
					return d.join("");
				},
				decompress: function (o) {
					return null == o
						? ""
						: "" == o
						? null
						: i._decompress(o.length, 32768, function (r) {
								return o.charCodeAt(r);
						  });
				},
				_decompress: function (o, n, e) {
					var t,
						i,
						s,
						p,
						u,
						c,
						a,
						l,
						f = [],
						h = 4,
						d = 4,
						m = 3,
						v = "",
						w = [],
						A = { val: e(0), position: n, index: 1 };
					for (i = 0; 3 > i; i += 1) {
						f[i] = i;
					}
					for (p = 0, c = Math.pow(2, 2), a = 1; a != c; ) {
						(u = A.val & A.position),
							(A.position >>= 1),
							0 == A.position && ((A.position = n), (A.val = e(A.index++))),
							(p |= (u > 0 ? 1 : 0) * a),
							(a <<= 1);
					}
					switch ((t = p)) {
						case 0:
							for (p = 0, c = Math.pow(2, 8), a = 1; a != c; ) {
								(u = A.val & A.position),
									(A.position >>= 1),
									0 == A.position && ((A.position = n), (A.val = e(A.index++))),
									(p |= (u > 0 ? 1 : 0) * a),
									(a <<= 1);
							}
							l = r(p);
							break;
						case 1:
							for (p = 0, c = Math.pow(2, 16), a = 1; a != c; ) {
								(u = A.val & A.position),
									(A.position >>= 1),
									0 == A.position && ((A.position = n), (A.val = e(A.index++))),
									(p |= (u > 0 ? 1 : 0) * a),
									(a <<= 1);
							}
							l = r(p);
							break;
						case 2:
							return "";
					}
					for (f[3] = l, s = l, w.push(l); ; ) {
						if (A.index > o) {
							return "";
						}
						for (p = 0, c = Math.pow(2, m), a = 1; a != c; ) {
							(u = A.val & A.position),
								(A.position >>= 1),
								0 == A.position && ((A.position = n), (A.val = e(A.index++))),
								(p |= (u > 0 ? 1 : 0) * a),
								(a <<= 1);
						}
						switch ((l = p)) {
							case 0:
								for (p = 0, c = Math.pow(2, 8), a = 1; a != c; ) {
									(u = A.val & A.position),
										(A.position >>= 1),
										0 == A.position &&
											((A.position = n), (A.val = e(A.index++))),
										(p |= (u > 0 ? 1 : 0) * a),
										(a <<= 1);
								}
								(f[d++] = r(p)), (l = d - 1), h--;
								break;
							case 1:
								for (p = 0, c = Math.pow(2, 16), a = 1; a != c; ) {
									(u = A.val & A.position),
										(A.position >>= 1),
										0 == A.position &&
											((A.position = n), (A.val = e(A.index++))),
										(p |= (u > 0 ? 1 : 0) * a),
										(a <<= 1);
								}
								(f[d++] = r(p)), (l = d - 1), h--;
								break;
							case 2:
								return w.join("");
						}
						if ((0 == h && ((h = Math.pow(2, m)), m++), f[l])) {
							v = f[l];
						} else {
							if (l !== d) {
								return null;
							}
							v = s + s.charAt(0);
						}
						w.push(v),
							(f[d++] = s + v.charAt(0)),
							h--,
							(s = v),
							0 == h && ((h = Math.pow(2, m)), m++);
					}
				},
			};
		return i;
	})();
	"function" == typeof define && define.amd
		? define(function () {
				return LZString;
		  })
		: "undefined" != typeof module &&
		  null != module &&
		  (module.exports = LZString);

	function encodeParams(params) {
		if (params === undefined || params === null) {
			return "";
		}

		if (typeof params !== "object") {
			return "" + params;
		}

		var result = [];

		for (var name in params) {
			if (name) {
				result.push(
					name + "=" + encodeURIComponent(encodeParams(params[name]))
				);
			}
		}

		return result.join("&");
	}

	function addCssClass() {
		var style = document.createElement("style");
		style.type = "text/css";
		var styleClasses =
			".widgetScreen {position: fixed; top: 0; bottom: 0; left: 0; right: 0; z-index: 1000; background-color: rgba(5, 5, 5, 0.5); display: flex; justify-content: center; align-items: center;}";
		styleClasses +=
			".iframeBox{border-radius: 4px; position: relative; width: 400px; z-index: 1010; background-color: #fff; -ms-overflow-style: none; scrollbar-width: none;}";
		styleClasses += `.iframeHolder::-webkit-scrollbar {display: none;}`;
		styleClasses += ".iframeBoxHeader{padding: 0px;}";
		styleClasses +=
			".iframeBoxHeaderCloseButton{border-radius: 8px; cursor: pointer; width: 15px; height: 15px; content: 'X'; text-align: center; float: right; background-color: #ccc; font-family: Arial;}";
		styleClasses +=
			".iframeBoxHeaderCloseButtonText{font-size: 10px; font-family: sans-serif; font-weight: bold; color: #fff; padding-top: 2px;}";
		styleClasses +=
			".iframeBoxHeaderLabel{height:30px; text-align: center; float: left;}";
		styleClasses += ".iframeClass{ width: 100%; height: 90vh; border: none; }";
		//styleClasses += ".iframeHolder{ width: 100%; height: 100%; }";
		style.innerHTML = styleClasses;
		document.getElementsByTagName("head")[0].appendChild(style);
	}

	function onCloseDialog(result) {
		paymentWidgedCallBack({ success: result });
		document.getElementsByTagName("body")[0].removeChild(widgetNode);
		widgetNode = undefined;
	}

	function onCommandRecieved(evnt) {
		if (evnt.origin.indexOf(paymentPageOrigin) === 0) {
			const resultObject = JSON.parse(evnt.data);
			onCloseDialog(resultObject.success === true);
		}
	}

	function showPaymentWidget(params, callBack) {
		paymentWidgedCallBack = callBack;
		if (!widgetNode) {
			addCssClass();
			widgetNode = document.createElement("DIV");
			widgetNode.className = "widgetScreen";
			var iframeBox = document.createElement("DIV");
			//var iframeBoxHeader = document.createElement("DIV");
			//var iframeBoxLabel = document.createElement("DIV");
			//var iframeBoxCloseButton = document.createElement("DIV");
			//iframeBoxLabel.className = "iframeBoxHeaderLabel";
			//iframeBoxCloseButton.className = "iframeBoxHeaderCloseButton";
			//iframeBoxLabel.innerHTML = "";
			//var iframeBoxHeaderCloseButtonText = document.createElement("DIV");
			//iframeBoxHeaderCloseButtonText.innerHTML = "X";
			//iframeBoxHeaderCloseButtonText.className = "iframeBoxHeaderCloseButtonText";
			//iframeBoxCloseButton.appendChild(iframeBoxHeaderCloseButtonText);
			// iframeBoxCloseButton.addEventListener("click", function(){
			//     onCloseDialog(false)
			// });
			//iframeBoxHeader.appendChild(iframeBoxLabel);
			//iframeBoxHeader.appendChild(iframeBoxCloseButton);
			//iframeBoxHeader.className = "iframeBoxHeader";
			iframeBox.className = "iframeBox";
			var iframe = document.createElement("IFRAME");
			var iframeHolder = document.createElement("DIV");
			iframeHolder.className = "iframeHolder";
			iframeHolder.appendChild(iframe);
			//iframeBox.appendChild(iframeBoxHeader);
			iframeBox.appendChild(iframeHolder);
			iframe.src =
				halyk.Config().pageUrL +
				"?params=" +
				LZString.compressToEncodedURIComponent(encodeParams(params)) +
				"&isShortForm=true";
			iframe.className = "iframeClass";
			window.addEventListener("message", onCommandRecieved, false);
			widgetNode.appendChild(iframeBox);
			document.getElementsByTagName("body")[0].appendChild(widgetNode);
		}
	}

	function p2p(params) {
		location.href =
			pageUrl +
			"?params=" +
			LZString.compressToEncodedURIComponent(encodeParams(params)) +
			"&isTransfer=true";
	}
	function aft(params) {
		location.href =
			pageUrl +
			"?params=" +
			LZString.compressToEncodedURIComponent(encodeParams(params)) +
			"&isAFT=true";
	}
	function oct(params) {
		location.href =
			pageUrl +
			"?params=" +
			LZString.compressToEncodedURIComponent(encodeParams(params)) +
			"&isOCT=true";
	}
	halyk.p2p = p2p;
	halyk.aft = aft;
	halyk.oct = oct;

	halyk.pay = pay;
	halyk.showPaymentWidget = showPaymentWidget;
})(halyk || (halyk = {}));
